package org.xukai.common.util.json;

import java.io.Serializable;
import java.util.List;

/**
 * 菜单信息
 * @author JackyLIU
 *
 */
public class MenuInfo implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2347402629823147124L;

	/**
	 * 菜单编号
	 */
	private Long id;
	
	/**
	 * 菜单对应的子应用的编号，一般订单为1,商品管理为2
	 */
	private String kind;
	
	/**
	 * 子应用的菜单编号，例如订单管理为loc=1,快递模板为loc=2
	 */
	private String loc;
	
	/**
	 * domain为子应用所对应的域名，例如订单管理为jxc.superboss.cc，商品管理为ijxc.superboss.cc
	 */
	private String domain;
	
	/**
	 * 此菜单对应的用户级别，如果为空，或者1表示，开发给所有用户，权限越高，userLevel数值越大
	 */
	private String userLevel;
	
	/**
	 * 菜单路径，超级掌柜使用的都是单页面操作，所以渲染出来的路径都是在#后面的路径
	 */
	private String path;
	
	/**
	 * 菜单名称
	 */
	private String name;
	
	/**
	 * 父级菜单的编号，只有子菜单才需要使用kind、loc、domain、path等参数
	 */
	private Long parentId;
	
	/**
	 * 菜单的图标，这里一般存储前端的class名称
	 */
	private String icon;

	/**
	 * 标记用户是否有权限访问菜单
	 */
	private Integer hasRight;
	
	/**
	 * 父级菜单下的子菜单信息
	 */
	private List<MenuInfo> children;

	public Integer getHasRight() {
		return hasRight;
	}

	public void setHasRight(Integer hasRight) {
		this.hasRight = hasRight;
	}

	public String getKind() {
		return kind;
	}

	public void setKind(String kind) {
		this.kind = kind;
	}

	public String getLoc() {
		return loc;
	}

	public void setLoc(String loc) {
		this.loc = loc;
	}

	public String getDomain() {
		return domain;
	}

	public void setDomain(String domain) {
		this.domain = domain;
	}

	public String getUserLevel() {
		return userLevel;
	}

	public void setUserLevel(String userLevel) {
		this.userLevel = userLevel;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getParentId() {
		return parentId;
	}

	public void setParentId(Long parentId) {
		this.parentId = parentId;
	}

	public List<MenuInfo> getChildren() {
		return children;
	}

	public void setChildren(List<MenuInfo> children) {
		this.children = children;
	}

	public String getIcon() {
		return icon;
	}

	public void setIcon(String icon) {
		this.icon = icon;
	}
	
	public static MenuInfo buildSimple(Long id, String domain, String path){
		MenuInfo info = new MenuInfo();
		info.setId(id);
		info.setDomain(domain);
		info.setPath(path);
		return info;
	}
}
